Page Description Languages (PDL) are typically used to communicate information from a computer to a printer. This information is usually transmitted as a continuous stream data flow. The information transmitted generally includes control information and task specific information, such as text to be printed. Control information relates to the state of the printer, whereas task specific information relates to the character content of the specific print task at hand. The control information transmitted from the computer to the printer might include, but is not limited to, information related to a particular PDL being used, a printer address that identifies a specific printer on a network, a print job priority, a specific paper bin to be used, and paper feed rates. Task specific information would control the placement of ink on each page by defining the characters or dots comprising graphics that are to be printed. In this regard, an important aspect of PDL is the compatibility of the information exchange between the host computer and the receiving printer. To provide greater efficiency in exchanging data from a computer to a printer over a network, the continuous stream data is normally converted into packetized data at a network interface card. At a printer server, the packetized data is converted back to continuous stream data for input to the printer.
In a more general sense, the communication exchange between a host module and a receiving module categorically falls into either unidirectional or bi-directional modes of communication. Unidirectional data flow moves information in only one direction, commonly from the host module to the receiving module; there is little or no reverse communication of information from the receiving module back to the host module. The communication between a computer and a printer is generally unidirectional from the computer to the printer; the only information then provided the computer regarding the printer's status is a handshake signal indicating whether the printer is on-line and ready to accept data from the computer. If the printer is not ready to accept commands from the computer, the computer receives limited information from the printer regarding the cause of the communication problem.
In comparison, the bi-directional mode of communication supports informational exchanges from the host module to the receiving module and from the receiving module back to the host module. For example, if provided with bi-directional communication capability, a computer can both transmit information to a printer and receive status information from it. Bi-directional communication can facilitate greater efficiency by keeping a user fully informed about the status of a printing task, which may be particularly important when the host module and receiving module are communicating over greater distances (i.e., in different rooms or in different buildings).
However, in a bi-directional mode of communication, neither the host module nor the receiving module can intersperse control information on the "fly". In other words, if either the host module or the receiving module desires to exchange control information, it must wait until a current informational exchange has been completed. In this regard, if an error message or control information has developed during the data transfer, the error message or control information cannot be transmitted until after the current data flow has been terminated. This limitation is particularly significant if, for example, a user wishes to abruptly terminate a data transfer (i.e., a print job) before it is completed, or if a failure at the printer has occurred.
A new standard for communication between computers and peripheral devices such as printers, entitled "Standard Signaling Method for a Bi-directional Parallel Peripheral Interface" has recently been developed. An interface designed in accordance with this specification supports bi-directional communication over a communication link (cable) between the host module and the receiving module. This form of communication allows the host module and receiving module to separate control information from task specific information. However, even in such bi-directional communications, there is still no way to recognize control information that is interspersed throughout a "transmitting" data stream. Irrespective of which channel communication is occurring on, additional commands can only be sent over a channel after the termination of the current data stream on that channel. If commands were interspersed within the data stream, these commands would be ignored or result in communication errors, causing a print job to be disrupted or contain undesired characters.
Communication systems that allow the host module or receiving module to disperse commands throughout the data stream are generally categorized as packetized data command formats, and as noted above, are often used for communications over networks. These packetized formats permit intervention during the informational exchange between the host module and receiving module (or vice versa). In other words, control information, including status information, can be exchanged between the host module and receiving module asynchronous of task specific information. A data packet might generally consist of, in the case of a computer and a printer, page layout information surrounded by prefix and post-fix information that includes the form of data contained in the packet, the source of the data, the destination of the data, and, where the host module or receiving module wishes to interrupt the data communication, termination commands.
Network environments requiring communication between several satellite terminals, network printers and a variety of other network hardware and software applications typically use packetized data command formats to exchange information between the various nodes on the network. These packets contain instructional commands identifying the destination of the information (or packet) and any commands and control functions relevant to the instructional task of the packet. Since packetized data formats are more flexible, powerful, and economical, they represent a preferred form of communication between a host module and a receiving module.
If distinct and different forms of communication between a host module and a receiving module are attempted (specifically, continuous data flow--either unidirectional or bi-directional--and packetized data flow--either unidirectional or bi-directional) that are substantially incompatible because of hardware and software modifications needed to accommodate transitions from one communication mode to another, problems are likely to arise. Clearly, a communication scheme that supports transitioning from one form of communication to another will require some mechanism or method for automatically configuring the modules such that a receiving module (or a host module) designed to exchange packetized data can recognize that the host module (or receiving) module is not able to do so, and more importantly, must recognize this condition without disrupting communications between the two or causing a communication to be misinterpreted. Software attempting to communicate between modules or to cause a transition in a misconfigured environment will produce error messages, improper instructions, or faulty data exchange between the host module and the receiving module.
In this regard, there is a need for a method and apparatus to automatically recognize if a receiving module (or host module) is capable of a desired mode of communication without causing an error response in the module, and to convert that module to the desired data format if it is capable of operating in that mode, without disrupting communications in an existing and different mode.